import axios from 'axios'
import { API, ERR_CODE, API_TIMESTAMP } from 'api/config'

export const Detail = `${API}/playlist/detail` //  获取歌单详情
export const RankListApi = `${API}/toplist/detail` //  所有榜单内容摘要
export const SubscribeApi = `${API}/playlist/subscribe` //  收藏歌单
export const CommentPlayListApi = `${API}/comment/playlist` //  评论数据

export const PlayListTracksApi = `${API}/playlist/tracks` //  对歌单添加或删除歌曲

export function GetPlayListDetail (id) {
  const url = API_TIMESTAMP(Detail)

  return axios.get(url, {
    params: { id }
  }).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res)
    } else {
      return Promise.reject(res)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 *  获取排行榜信息
 * @return {Promise<AxiosResponse<T>>}
 * @constructor
 */
export function GetRankListAsync () {
  return axios.post(RankListApi).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res)
    } else {
      return Promise.reject(res)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 * 收藏/取消收藏 歌单
 * @param id {number} 歌单ID
 * @param t {number}  1收藏 2取消收藏
 */
export function SubscribeAsync (id, t = 1) {
  const url = API_TIMESTAMP(SubscribeApi)
  return axios.get(url, {
    params: { id, t }
  }).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res)
    } else {
      return Promise.reject(res.msg)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 * 调用此接口 , 可以添加歌曲到歌单或者从歌单删除某首歌曲 ( 需要登录 )
 * @param op {string} 添加 | 删除 add | del
 * @param pid {string} 歌单 id
 * @param tracks {string} 歌曲 id,可多个,用逗号隔开
 */
export function PlayListTracksAsync ({op, pid, tracks}) {
  const url = API_TIMESTAMP(PlayListTracksApi)

  return axios.get(url, {params: {op, pid, tracks}}).then(res => {
    /* if (res.status === ERR_CODE) {
      console.log('请求成功')
      if (res.body.code === ERR_CODE) {
        console.log('添加成功')
        return Promise.resolve(res.body)
      } else {
        console.log('添加失败')
        return Promise.reject(res.body.message)
      }
    } else {
      console.log('请求失败')
      return Promise.reject(res.msg)
    } */
    return res.status === ERR_CODE
      ? res.body.code === ERR_CODE
        ? Promise.resolve(res.body)
        : Promise.reject(res.body.message)
      : Promise.reject(res.msg)
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 * 歌单评论
 * @param id {number} 歌单 id
 * @param offset {number} 取出评论数量 , 默认为 20
 * @param limit {number} 偏移数量 , 用于分页 , 如 :( 评论页数 -1)*20, 其中 20 为 limit 的值
 */
export function CommentPlayListAsync ({id, offset, limit = 20}) {
  return axios.get(CommentPlayListApi, {
    params: {id, offset, limit}
  }).then(res => {
    return res.code === ERR_CODE ? Promise.resolve(res) : Promise.reject(res.msg)
  }).catch(err => {
    return Promise.reject(err)
  })
}
